Artificial Intelligence (A.I.) is a very broad research area that focuses on “making computers think like people” and includes disciplines like neural networks, genetic algorithms, decision trees, frame systems, and expert systems. Knowledge representation is the area of A.I. concerned with how knowledge is represented and manipulated. Expert systems use knowledge representation to facilitate the codification of knowledge into a knowledge-base, which can be used for reasoning, i.e., this knowledge-base is operable to process data to infer conclusions. Expert systems are also known as knowledge-based systems and knowledge-based expert systems and are considered applied artificial intelligence. Some expert systems use rule engines to apply rules to data.
Generally speaking, a rule is a logical construct for describing the operations, definitions, conditions, and/or constraints that apply to some predetermined data to achieve a goal. For example, a business rule might state that no credit check is to be performed on return customers.
Typically, a rule engine includes a suite of software modules or components that manages and automates the rules to implement the expert system. For instance, the rule engine evaluates and fires one or more of the rules based on the evaluation.
In general, rules are written in rule languages. Many conventional rule engines in general support their own rule language. For example, C Library Integrated Production System (CLIPS) engine supports CLIPS language, Jess engine supports a CLIPS-like language, ILOG JRules supports ILOG Rule Language (IRL), etc. One conventional rule engine, Drools 2.x supports a different version of Drool's Rule Language (DRL), as well as Groovy, Java, and Python through the use of semantic modules. When using a Groovy semantic module, the entire rule, which includes parameters, conditions, and consequence, is written in Groovy. Likewise, when using Java Annotations semantic module, the rule would be a Java class, whose methods would be the conditions and consequences of the rule. Thus, rules in a rule file are conventionally written in a single rule language.